# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===========================
@Time : 2022/10/1 0001 10:45
@Author : 测试开发工程师
@File : 28. capability 配置参数解析与分布式运行.py
@Software: PyCharm
============================
"""

"""
capability 概述
    capability 是 WebDriver 支持的标准命令之外的扩充命名（配置信息）
    配置 web 驱动的属性，如浏览器名称，浏览器平台等
    结合 selenium Grid 完成分布式，兼容性等测试
    官网地址： https;//www.selenium.dev/zh-cn/documentation/webdriver/capabilities/shared/
    
capability 配置
     capabilities = {'browserName': 'ceshiren', 'platformName': 'windows'}
     
Selenium Grid 简介(分布式（主节点-linux主机,windows主机）：火狐，谷歌v101,谷歌v100,其他浏览器)  docker
   Selenium Grid 允许我们在多台机器上并行运行测试，并集中管理不同的浏览器版本和浏览器配置（而不是在每个单独的测试中）
   官网地址： https://www.selenium.dev/documentation/grid/
   搭建环境： https://selenium-node.hogwarts.ceshiren.com/ui#

分布式运行


"""

import time
from selenium import webdriver
from selenium.webdriver.common.by import By


def test_ceshiren_capabilities():
    capabilities = {'browserName': 'chrome', 'platformName': 'windows'}
    # 通过 desired_capabilities 添加配置信息
    driver = webdriver.Chrome(desired_capabilities=capabilities)
    driver.implicitly_wait(5)
    driver.get('https://www.ceshiren.com')
    text = driver.find_element(By.CSS_SELECTOR, '.login-button').text
    print(text)
    time.sleep(3)
    driver.quit()


"""
分布式运行：
    1. 保证本地可以正常调通
    2. 实例化 Remote() 类并添加相应的配置
    command_executor
    desired_capabilities
"""


def test_ceshiren_grid():
    hogwarts_grid_url = "https://selenium-node.hogwarts.ceshiren.com/wd/hub"
    capabilities = {'browserName': 'chrome', 'browserVersion': '101.0'}
    # 通过 desired_capabilities 添加配置信息
    driver = webdriver.Remote(command_executor=hogwarts_grid_url, desired_capabilities=capabilities)
    driver.implicitly_wait(5)
    driver.get('https://www.ceshiren.com')
    text = driver.find_element(By.CSS_SELECTOR, '.login-button').text
    print(text)
    time.sleep(3)
    driver.quit()
